package com.cn.wanxi.servlet;

import com.alibaba.fastjson.JSONObject;
import com.cn.wanxi.model.ResultModel;
import com.cn.wanxi.model.UserModel;
import com.cn.wanxi.service.UserService;
import com.cn.wanxi.service.impl.UserServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/login")
public class UserLoginServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        1.得到前端给后台的值
        String username = req.getParameter("username");
        String password = req.getParameter("password");
        String code = req.getParameter("code");
        String sessionCode = (String) req.getSession().getAttribute("code");

// 你们再网上去查找doget和dopost的区别？

//        那么必须将后台的数据转换位json格式
//        一般有三种   gson  fastjson  jackson
//        阿里的fastjson是属于第三方包，框架，技术，除了Java自带的jdk都属于第三方
//        如果用第三方我们必须要下载包，适配包
//        既然是json对象肯定属于对象，所以我们如果要返回给前端，必须封装为对象
//        2.将这些值封装到一个对象
        UserModel userModel = new UserModel();
        userModel.setUsername(username);
        userModel.setPassword(password);

        userModel.setCode(code);
        userModel.setSessionCode(sessionCode);
//        3.调用服务逻辑层
        UserService userService = new UserServiceImpl();
//        既然返回给前端的是对象，那么我们就要封装一个对象，
//        那么对象里面应该有那些属性或者方法呢？
//        就是说，我们前端做的任何操作都应该给前端一个返回值；
//        前端的返回值，有可能是想得到布尔值，有可能还想得到字符
//        还有可能是数组，还有可能是集合，还有可能是对象。
//        4.得到服务逻辑层返回的数据
        ResultModel resultModel = userService.login(userModel);
//        JSONObject object=new JSONObject();
//        object.put("user",userModel);
//        resp.getWriter().println(object);
//        5.将返回值返回给前端
        resp.getWriter().println(JSONObject.toJSONString(resultModel));

    }
}
